package com.qk;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import org.junit.jupiter.api.Test;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class Jjwt {
        //JXU0RjdCJXU1QkEy
    /**
     * 生成JWT令牌测试方法
     *
     * 该方法用于测试JWT令牌的生成过程，创建包含用户信息的令牌并打印到控制台
     *
     * 参数: 无
     * 返回值: 无
     */
    @Test
    public void generateJwt() {
        // 创建JWT声明信息，包含用户基本信息
        Map<String, Object> claims = new HashMap<>();
        claims.put("username", "admin");
        claims.put("role", "admin");
        claims.put("id", 1);

        // 构建JWT令牌，设置声明信息、签名算法和过期时间
        String jwt = Jwts.builder()
                .setClaims(claims)
                .signWith(SignatureAlgorithm.HS256, "JXU0RjdCJXU1QkEy")
                .setExpiration(new Date(System.currentTimeMillis()+1000*60*60*24))
                .compact();
        System.out.println(jwt);
    }
    //校验JWT令牌
    public boolean validateJwt(String jwt) {
        try {
            Jwts.parser().setSigningKey("JXU0RjdCJXU1QkEy").parseClaimsJws(jwt);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

}
